home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (C) 1994, Silicon Graphics, Inc.
- * All Rights Reserved.
- *
- * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
- * the contents of this file may not be disclosed to third parties, copied or
- * duplicated in any form, in whole or in part, without the prior written
- * permission of Silicon Graphics, Inc.
- *
- * RESTRICTED RIGHTS LEGEND:
- * Use, duplication or disclosure by the Government is subject to restrictions
- * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
- * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
- * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
- * rights reserved under the Copyright Laws of the United States.
- */
- #ifndef _TIME_ENTRY_
- #define _TIME_ENTRY_
-
- #include <Vk/VkComponent.h>
- #include <Vk/VkResizer.h>
-
- typedef enum TimeEntryReason { TE_none, TE_selected, TE_textChanged,
- TE_timeChanged, TE_postMenu, TE_deselect };
-
- class TimeEntry;
-
- typedef struct {
- TimeEntry *obj;
- TimeEntryReason reason;
- XEvent *event;
- } TimeEntryCallback;
-
- class TimeGrid;
- class VkResizer;
- class TimeInterval;
-
- class TimeEntry : public VkComponent {
- public:
- TimeEntry(const char *name, TimeGrid *grid);
- ~TimeEntry();
-
- virtual const char* className();
- virtual void raise();
-
- void setCallback(XtCallbackProc proc, XtPointer client_data);
- XtPointer getCallbackData() { return _callbackData; }
- int start() { return _start; }
- int length() { return _length; }
- virtual Boolean setTimeInterval(int start, int length);
- virtual char *getText();
- virtual void setText(char *str);
- virtual Boolean reposition();
- void callCallback(TimeEntryReason reason, XEvent *event = NULL);
- virtual void select(Boolean makeModified = False);
-
- protected:
- virtual void build();
- virtual void destroy();
-
- void menu(XEvent *event);
- void layerText(Boolean makeModified);
-
- static void button_press(Widget w, XtPointer client_data, XEvent *event,
- Boolean *dispatch);
- static void text_stub(Widget w, XtPointer client_data, XtPointer call_data);
-
- Widget _label;
- int _start, _length;
- TimeGrid *_grid;
- XtCallbackProc _callback;
- XtPointer _callbackData;
- };
-
- class TimeEntryText: public TimeEntry {
- public:
- TimeEntryText(const char *name, TimeGrid *grid, Boolean editable);
- ~TimeEntryText();
-
- virtual void hide();
- virtual void raise();
-
- virtual char *getText();
- virtual void setText(char *str);
- virtual Boolean reposition();
- void setModified(Boolean v) { _modified = v; }
- virtual Boolean setTimeInterval(int start, int length);
-
- protected:
- virtual void build();
- virtual void destroy();
- void resizeCallback(VkComponent *, XtPointer, XtPointer);
- void updateInterval();
- void textChanged();
- Boolean textComplete();
- void doActivate();
- void scheduleActivate();
- void adjustInterval();
-
- /* static void resize_stub(Widget w, XtPointer client_data,
- XtPointer call_data);
- */
- static void activate_stub(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void modify_stub(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void focus_stub(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void modified_stub(Widget w, XtPointer client_data,
- XtPointer call_data);
- static void button_press(Widget w, XtPointer client_data, XEvent *event,
- Boolean *dispatch);
- static Boolean sched_activate(XtPointer client_data);
- static void interval_stub(Widget w, XtPointer client_data,
- XtPointer call_data);
-
- VkResizer *_resizer;
- Boolean _modified, _nonEmpty;
- XtWorkProcId _id;
- TimeInterval *_interval;
- };
-
- #endif
-